package com.dhu.graph.basic;

import com.dhu.graph.basic.edge.Edge;

/**
 * @ Author ：snow
 * @ Date   ：Created in 2020-05-11
 * @ Description：
 * @ Modified By：
 * @ Version:
 */
public interface AbstractGraph {

    /**
     * 边的数量
     * @return
     */
    public int E();

    /**
     * 顶点数
     * @return
     */
    public int V();

    /**
     *
     * @return 顶点v的邻接表、可能是int 也可能是Edge对象
     */
    public Iterable<? extends Object> adj(int v);

    /**
     * 将两个顶点连接，可能是无向边，也可能是有向边
     * @param v
     * @param w
     */
    public void addEdge(int v,int w);

    /**
     * 这里实现的加权图中添加边只能按照Edge对象
     * @param e
     */
    public void addEdge(Edge e);
}
